<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <script th:src="@{/static/zxxcd/js/jquery-3.4.1.min.js}"></script>
    <script th:src="@{/static/zxxcd/js/xlsx.core.min.js}"></script>
    <title>上传excel文件并读取数据</title>
</head>
<body>
<input type="text" id="txtArea" style="float:left;"/>
<input type="file" id="upfile" style="float:left; display:none;" />
<select id="sheet" style="display:none; height:21px; float:left;" onchange="readexcel()">
    <option value="" selected>-请选择-</option>
</select>
<input type="button" style="float:left; height:21px;" onclick="loadExcel();" value="read">

<script type="text/javascript">
    var oWB = null;
    var oXL = null;
    function loadExcel() {
        $("#upfile").click();
        //得到文件路径的值
        var filePath = $("#upfile").val();
        //创建操作EXCEL应用程序的实例
        try{
            this.oXL = new ActiveXObject("Excel.Application");
            try{
                //打开指定路径的excel文件
                this.oWB = this.oXL.Workbooks.open(filePath);
                //获取sheet数
                var sheet = this.oWB.Worksheets.count;
                //返回所传excel表格的sheet数供选择
                $("#sheet").css("display","block");
                for(var i = 1;i <= sheet;i++){
                    var option = '<option value="'+i+'">-第'+i+'页-</option>';
                    $("#sheet").append(option);
                }
            }catch(e){
                alert("请设置浏览器启用将文件上传到浏览器时包含本地路径!");
            }
        }catch(e){
            alert("请设置浏览器允许初始化和执行未标记为可安全执行脚本的ActiveX控件!");
        }
    }
    function readexcel(){
        var selsheet = $("#sheet").val();
        var tempStr = [];
        //操纵所选sheet页(从一开始，而非零)
        oWB.worksheets(parseInt(selsheet)).select();
        var oSheet = oWB.ActiveSheet;
        //使用的行数和列数
        var rows =  oSheet.usedrange.rows.count;
        var columns = oSheet.usedrange.Columns.count;
        //查找线路号所在列
        var j = 1;
        for(j;j <= columns; j++){
            if(oSheet.Cells(1, j).value == "线路"){
                break;
            }
        }
        try {
            //首行首列为表头，默认不取值。
            for (var i = 2; i <= rows; i++) {
                if(oSheet.Cells(i, j).value){
                    tempStr.push(oSheet.Cells(i, j).value)
                    //tempStr += oSheet.Cells(i, 3).value + "," ;
                }
            }

        } catch(e) {
            $("#txtArea").val(tempStr);
        }
        $("#txtArea").val(tempStr);
        //退出操作excel的实例对象
        //oXL.Application.Quit();
        //手动调用垃圾收集器
        //CollectGarbage();
    }
</script>
</body>
</html>